package zhou_jing_kang;

/**
 * @Author zhoujingkang
 * @Date 2021/1/23 15:45
 * @Description 栈的压栈和出栈
 */
public class ZHOU_JING_KANG_TH_Q1 {
    //栈中的元素个数
    private int length = 0;
    //保存压入栈中的元素数组
    private Object[] arry;
    //栈的容量
    private int size;
    //构造器length 表示的就是栈初始化数据长度
    public ZHOU_JING_KANG_TH_Q1(int length){
        arry= new Object[length];
        this.size=length;
    }


    //压栈：先判断栈中元素是否已满。若满，则输出栈已满，若没满，则压栈。
    public void push(Object o){
        this.arryChange();
        arry[length] = o;
        length++;
    }
    //出栈：先判断栈中是否有元素。若有，则出栈，若没有，则说明栈为空。
    public void pull(){
        this.arryChange();
        if (arry[0] != null){
            arry[0] = null;
            length--;
        }
    }

    //输出栈中元素个数。
    public int getLength(){
        return this.length;
    }

    //判断栈中元素的个数是否满足压栈、出栈的条件
    public void arryChange(){
        if (this.length >= arry.length){
            System.out.println("栈内存已满。");
        }else {
            System.out.println("栈为空！请压栈后再出栈。");
        }
    }

    public static void main(String[] args) {
        ZHOU_JING_KANG_TH_Q1 stack = new ZHOU_JING_KANG_TH_Q1(5);
        stack.push("1");
        stack.push("2");
        stack.push("3");
        stack.push("4");
        stack.pull();
        stack.push("5");

        System.out.println("栈的长度为:" + stack.getLength());
    }
}
